package java学习.第06章_面向对象编程_基础;

/**
 * ClassName: D3_方法之值传递
 * Package: java学习.第06章_面向对象编程_基础
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2023/3/4 21:48
 * @Version 1.0
 */
public class D3_方法之值传递 {
    public static void main(String[] args) {
        D3_方法之值传递 d = new D3_方法之值传递();
        /**
         * 基本数据类型  引用数据类型  都是 值 传递
         * 基本数据类型     数值传递
         * 引用数据类型   地址值传递
         *   但是 String 是引用数据类型
         *      虽是地址传递，但是却不行,
         *      因为 String 是加 final  不可变得
         *      即此地的地址不可以改变，所以动不了
         *      进行修改会重新规划一个空间
         */
        int m = 1;
        int[] ms = new int[]{1};
        d.transmit(m);
        d.transmit(ms);
        System.out.println(m);//1
        System.out.println(ms[0]);//2

    }
    public void transmit(int m){//对数值操作，不影响调用者
        m++;
    }
    public void transmit(int[] m){//对地址的值操作，影响调用者
        m[0]++;
    }

    private static void 类型的传递方式() {
        int n = 10;
        int m = n;//数值传递
        m++;
        System.out.println("m = " + m);//11
        System.out.println("n = " + n);//10

        int[] is = new int[]{1,2,3};
        int[] is1 = is;//地址传递

        String s = new String("5");//在堆里面
        String s1 = "5";//在字符串常量池里
    }

}
